package pers.mor.tomcat.util;

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadUtil {

    private static ThreadPoolExecutor threadPool =
            new ThreadPoolExecutor(
                    20,100,// 保证至少有20个备用线程，最多100个
                    60, // 超过20个以外的线程空闲时间最多60秒，过时即回收销毁
                    TimeUnit.SECONDS, // 配合keepAliveTime参数意为60秒
                    // BlockingQueue接口代表队列，LinkedBlockingQueue为实现类
                    // 指定队列大小，最多容纳10个任务，由20个线程处理
                    // 当任务超过10个时，则添加新的线程去处理，最多100个线程。
                    new LinkedBlockingQueue<Runnable>(10));

    public static void run(Runnable task) {
        threadPool.execute(task);
    }
}
